package com.ogawa.a7517.utils;

import android.content.Context;
import android.graphics.Rect;
import android.text.TextPaint;
import android.util.TypedValue;

/**
 * 与设备分辨率相关的工具类
 *
 * @author linwenxiong
 */
public class ViewUtil {

    /**
     * -1代表为初始化过
     */
    public static int mScreenWidth = -1, mScreenHeight = -1;

    /**
     * 根据手机的分辨率从 dp 的单位 转成为 px(像素)
     */
    public static int dip2px(float dpValue, Context context) {
        float value = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dpValue
                , context.getResources().getDisplayMetrics());
        return (int) value;
    }

    /**
     * 根据手机的分辨率从 px(像素) 的单位 转成为 dp
     */
    public static int px2dip(float pxValue,Context context) {
        final float scale = context.getResources().getDisplayMetrics().density;
        return (int) (pxValue / scale + 0.5f);
    }

    /**
     * 根据手机的分辨率从 sp的单位 转成为 px
     *
     * @param spValue
     * @return
     */
    public static int sp2px(float spValue,Context context) {
        float value = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, spValue
                , context.getResources().getDisplayMetrics());
        return (int) value;
    }

    /**
     * 根据String的大小和string 获取该string需要的长度
     *
     * @param text 要判断的字符串
     * @param size 字符串的大小以sp为标准
     * @return
     */
    public static float getStringWidthForSp(String text, float size,Context context) {
        float width = 0;
        TextPaint paint = new TextPaint();
        paint.setTextSize(dip2px(size,context));
        Rect rect = new Rect();
        paint.getTextBounds(text, 0, text.length(), rect);
        width = rect.width();
        return width;
    }

    /**
     * 根据String的大小和string 获取该string需要的长度
     *
     * @param text 要判断的字符串
     * @param size 字符串的大小以px为标准
     * @return
     */
    public static float getStringWidthForPx(String text, float size) {
        float width = 0;
        TextPaint paint = new TextPaint();
        paint.setTextSize(size);
        Rect rect = new Rect();
        paint.getTextBounds(text, 0, text.length(), rect);
        width = rect.width();
        return width;
    }

    /**
     * 获取字符串的高度
     *
     * @param text 要判断的字符串
     * @param size 字符串的大小以px为标准
     * @return
     */
    public static float getStringHeightForPx(String text, float size) {
        float height = 0;
        TextPaint paint = new TextPaint();
        paint.setTextSize(size);
        Rect rect = new Rect();
        paint.getTextBounds(text, 0, text.length(), rect);
        height = rect.height();
        return height;
    }

    /**
     * 获取状态栏高度
     *
     * @return
     */
    public static int getStatusBarHeight(Context context) {
        int statusBarHeight = (int) Math.ceil(25 * context.getResources().getDisplayMetrics().density);
        return statusBarHeight;
    }

    /**
     * 获取屏幕宽度
     *
     * @return
     */
    public static int getScreenWidth(Context context) {
        return context.getResources().getDisplayMetrics().widthPixels;
    }

    /**
     * 获取屏幕高度
     *
     * @return
     */
    public static int getScreenHeight(Context context) {
        return context.getResources().getDisplayMetrics().heightPixels;
    }
}
